package tablut;

public class PionRoi extends Pion implements Cloneable {
	PionRoi(int haut, int droite, int bas, int gauche, Case cas, Plateau plat) {
		super(IJoueur.BLANC, haut, droite, bas, gauche, cas, plat);
	}
	
	
	
	// La méthode vérifie si le roi peut être mangé, NOOOOON :'(
	@Override
	public boolean estEncercle(int dejaVerif) {
		int i = 0;
		Pion tmpPion;
		
		// Si le roi est sur le bord du plateau, il ne peut pas être capturé
		if(cas.x == 0 || cas.x == 8 || cas.y == 0 || cas.y == 8)
			return false;
		/* On vérifie les 4 côtés sans prendre la peine de différencier
		 * les 4 cas impliqués par dejaVerif, c'est plus rapide !
		 */
		if(Math.abs(cas.x + cas.y - 8) == 1)
			i++;
		
		tmpPion = plat.plateau[cas.x][cas.y-1].p;
		if(tmpPion != null && tmpPion.couleur == IJoueur.NOIR)
			i++;
		tmpPion = plat.plateau[cas.x+1][cas.y].p;
		if(tmpPion != null && tmpPion.couleur == IJoueur.NOIR)
			i++;
		tmpPion = plat.plateau[cas.x][cas.y+1].p;
		if(tmpPion != null && tmpPion.couleur == IJoueur.NOIR)
			i++;
		tmpPion = plat.plateau[cas.x-1][cas.y].p;
		if(tmpPion != null && tmpPion.couleur == IJoueur.NOIR)
			i++;
		
		if(i >= 4)
			return true;
		return false;
	}
	
	// Méthode redéfinie pour cloner le roi
	@Override
	public PionRoi clone() {
		return new PionRoi(distMax[0], distMax[1], distMax[2], distMax[3], cas, plat);
	}
	
	@Override
	public void reprendreEtat(Pion pion) {
		distMax[0] = pion.distMax[0];
		distMax[1] = pion.distMax[1];
		distMax[2] = pion.distMax[2];
		distMax[3] = pion.distMax[3];
		cas = pion.cas;
		estSurPlateau = pion.estSurPlateau;
	}
}
